Skip to content

Fix(audit,#19451): 10_LocalLlama -- la section logit_bias decrit le protocole, la lecture dit ce que le run donne - #24460

Merged
myia-ai-01 merged 2 commits into
mainfrom
fix/19451-localLlama-logitbias
Nov 4, 2026
Merged

myia-ai-01 merged 2 commits into
mainfrom
fix/19451-localLlama-logitbias

Conversation

@jsboige

@jsboige jsboige commented Nov 3, 2026

Copy link
Copy Markdown
Owner

Grain: MED/notebook-python — lane myia-ai-01:CoursIA-2 — prev: DEEP/notebook-python #24451

10_LocalLlama — la section logit_bias decrit le protocole, la lecture dit ce que le run donne

Le defaut

MyIA.AI.Notebooks/GenAI/Texte/10_LocalLlama.ipynb annoncait une section
intitulee « Analyse des resultats logit_bias » et y listait trois points de
lecture — effet du logit_bias, coherence a seed fixe, decalage de tokenizer
— comme si c'etaient des observations.

L'execution commitee ne produit aucun resultat :

  • sur OpenAI (https://api.openai.com/v1), l'appel avec logit_bias
    renvoie un HTTP 400 et une reponse vide ; les deux appels sans bias
    renvoient HTTP 200 avec deux reponses differentes ;
  • sur local-mini-v2 (127.0.0.1:8185), la connexion est refusee sur
    /tokenize (serveur absent) ;
  • le code journalise lui-meme l'echec : « ECHEC de la mesure sur 'OpenAI' :
    endpoint sans reponse pour avec logit_bias -- le test est inexploitable,
    aucun verdict de coherence ni d'effet n'est emis. »

La prose presente donc comme un resultat observe ce qui n'etait qu'une
attente : c'est l'ecart que l'organe scripts/notebook_tools/check_empty_verdict.py
signale sur le bloc de sortie de la cellule 25.

La correction

Markdown seule dans MyIA.AI.Notebooks/GenAI/Texte/10_LocalLlama.ipynb :

  1. la section devient « Ce que le test logit_bias mesure — et ce que ce run
    n'a pas mesure », et le point sur la reproductibilite est explicitement
    marque « attendu, non mesure dans ce run » ; un encadre rappelle que les
    trois points sont des attentes, pas des observations ;
  2. une lecture est inseree juste apres la cellule d'execution : elle detaille
    les deux endpoints (HTTP 400 et reponse vide d'un cote, connexion refusee
    de l'autre), lit le message d'echec du code, et dit comment relancer.

Aucune cellule de code, aucun output, aucun execution_count, aucune
metadata.papermill n'est touche -> aucune re-execution due (C.2 / C.3).

Diagnostic dérive

Cause : (b) claim antérieure fabriquee. La section presentait une analyse
de resultats la ou le carnet ne contient qu'un protocole et un echec de
mesure ; aucun chiffre n'etait cite, c'est la statut du resultat qui etait
faux. La cause de l'echec de mesure lui-meme est d'une autre nature et
reste visible : (a) env — l'endpoint local du port 8185 n'etait pas demarre, et
le backend cloud refuse la requete portant logit_bias (HTTP 400).

Verdict : CAUSE_FIXED pour le defaut porte par cette PR (la prose
n'affirme plus un resultat inexistant, et la lecture dit ce que le run donne
et ce qu'il ne donne pas). Aucun nombre n'est re-aligne : les sorties sont
inchangees et la PR n'introduit aucune valeur de performance, de timing ou
d'accuracy — la re-execution n'est donc pas due.

Ce que cette PR ne fait pas : elle ne rend pas la mesure possible. Le
verdict de coherence du logit_bias reste inobtainable tant qu'aucun endpoint
n'accepte la requete biasee et que le serveur local du port 8185 n'est pas
demarre. La lecture l'ecrit noir sur blanc plutot que de le faire croire.

Preuves

Organs passes sur la branche (base origin/main) :

Organe Verdict
check_cell_source_parses.py 0 finding
check_duplicate_sections.py 0 porteur
check_interp_positioning.py 0 finding
check_activity_leak.py --diff aucun passage d'activite dense ajoute
check_prose_quantitative_claims.py --diff origin/main...HEAD aucun compteur quantitatif en prose
check_output_collapse.py origin/main 0 flagged
check_output_failure_text.py origin/main 0 regressed
pre-commit (H.3, gitleaks, strips, encodage) tous Passed

Rouge herite, signale et non masque : check_empty_verdict.py continue de
signaler le bloc de sortie de la cellule 25 (verdict pose sur une mesure
invalide). Ce defaut est pre-existant (absent du diff) et le garde est
declare advisory — TRANCHE 24 de scripts/ci/fast_lane_registry.py :
« le defaut est PRE-EXISTANT (il est deja sur main), donc une PR qui
re-execute un carnet sans corriger la cause verrait un rouge HERITE de la
base ». La cause est le carnet lui-meme, pas la prose.

Perimetre

Une PR, un sujet : la prose de la section logit_bias et la lecture qui suit
la cellule d'execution, dans le carnet MyIA.AI.Notebooks/GenAI/Texte/10_LocalLlama.ipynb.
Aucun autre fichier touche.

See #19451

🤖 Generated with Claude Code

…rotocole, la lecture dit ce que le run donne

Le carnet annoncait une « Analyse des resultats logit_bias » alors que
l'execution commitee n'a produit **aucun verdict** : le cloud OpenAI a refuse
la requete portant `logit_bias` (HTTP 400, reponse vide) et l'endpoint local
`local-mini-v2` (127.0.0.1:8185) a refuse la connexion sur `/tokenize`. Le code
l'a lui-meme journalise : « ECHEC de la mesure sur 'OpenAI' ... le test est
inexploitable, aucun verdict de coherence ni d'effet n'est emis. »

La prose presentait donc comme un resultat observe ce qui n'etait qu'une
attente. Correction :
- la section devient « Ce que le test `logit_bias` mesure — et ce que ce run
  n'a pas mesure », et le point sur la reproductibilite est explicitement
  marque « attendu, non mesure dans ce run » ;
- une lecture placee apres la cellule d'execution detaille les deux endpoints
  (HTTP 400 + reponse vide d'un cote, connexion refusee de l'autre), rappelle
  que les points precedents sont des attentes et non des observations, et dit
  comment relancer.

Correction **markdown seule** : aucune cellule de code, aucun output,
aucun `execution_count`, aucune `metadata.papermill` touches -> aucune
re-execution due (C.2 / C.3).

Le garde `check_empty_verdict.py` signale toujours le bloc de sortie de la
cellule 25 : le verdict y est pose sur une mesure invalide. Ce defaut est
**herite de la base** (absent du diff) et le garde est declare **advisory**
(TRANCHE 24 de `scripts/ci/fast_lane_registry.py`) ; sa cause est le carnet
lui-meme (re-execution impossible ici : ni endpoint local, ni cle cloud),
pas la prose.

See #19451

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@github-actions

github-actions Bot commented Nov 3, 2026 •

Copy link
Copy Markdown
Contributor

Golden-Set Execution (H.7 P3)

✅ 9/9 notebooks passed (certified reproducible)

Notebook Status Time
2.1-Workflow-ML.ipynb ✅ SUCCESS 4.5s
2.2-Descente-de-gradient.ipynb ✅ SUCCESS 2.9s
2.3-Regression-lineaire-logistique.ipynb ✅ SUCCESS 3.4s
2.4-Arbres-Forets-Ensembles.ipynb ✅ SUCCESS 3.1s
Search-01-StateSpace.ipynb ✅ SUCCESS 3.1s
SL-1-LogicalLearning.ipynb ✅ SUCCESS 1.9s
RL-04-Bandits-Manchots-Python.ipynb ✅ SUCCESS 26.9s
GameTheory-04c-NashExistence-Python.ipynb ✅ SUCCESS 2.1s
GameTheory-13d-Optimistic-CFR-Python.ipynb ✅ SUCCESS 8.7s

Pinned lockfile: scripts/notebook_tools/golden_set.lock.txt (H.7 P3, axe A #4208)

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

G-VAR-2/3 GENRE signals (advisory, non bloquant, #10020).
La lane `myia-ai-01:CoursIA-2` voit ces signaux actifs sur les mergees du jour (UTC 2026-11-03) :

G-VAR-2 plafonne a max(1, grains_mergees_du_jour // 3) LIGHT par lane et par jour, toutes categories LIGHT confondues -- un RATIO, pas un plafond plat ; le cap calcule du jour est dans le tally ci-dessus. G-VAR-3 interdit deux genres LIGHT consecutifs. Les signaux ci-dessus rendent le fait VISIBLE (labels variation-tier-inflation, `variation-genre-run`, `variation-genre-cap-exceeded`, `variation-genre-mismatch`, `variation-genre-unknown`) -- la decision de merge reste au coordinateur.

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

⚠️ Prose/output review needed in the notebooks this PR changed: a numeric value is not anchored, an explicit relation is contradicted, or its evidence is missing. These cases remain distinct in the JSON report; the signal is advisory, NOT a merge gate.

Scope = notebooks CHANGED in this PR, not the whole corpus. Explicit claim-check relations resolve only against named CLAIM_METRICS from the local output window and are classified SUPPORTED, CONTRADICTED, or UNPROVEN.
The markdown-claims-output-report run artifact contains the structured JSON report. See python scripts/check_markdown_claims_output.py --help for re-running locally.
Detector rationale: c.290 / c.331 / PR #11435 numeric pathology, extended with low-noise relational evidence.

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

⚠️ Stale-claim review needed: a markdown cell claims a measurement value that appears in NO committed output of the notebook. Advisory, NOT a merge gate — triage against the JSON artifact.

Scope = notebooks CHANGED in this PR, not the whole corpus. The stale-claim-report run artifact holds the structured JSON.
Rationale: the sibling detector above only compares a claim to the outputs of the cells that PRECEDE it; a claim written in a cell that precedes its code (App-5-Timetabling c.2/c.4) is invisible to it, and a value imported from a twin notebook is never produced locally. See python scripts/check_stale_claims.py --help.

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

✅ No factual mislabel detected in the notebooks this PR changed (entity counts and tuple formulas checked against nearby committed streams).

Scope = notebooks CHANGED in this PR, not the whole corpus. The factual-mislabel-report run artifact holds the structured JSON.
Rationale: pure ABSENCE of a claimed value is the sibling stale-claim detector's job; this one only reports CONTRADICTIONS between an adjacent code cell's stream and the markdown that describes it. See python scripts/check_factual_mislabel.py --help.

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

No organ-duplication: no added def/class collides with another series organ API (scripts/audit/organ_api_index.yaml).

Detector: python scripts/audit/detect_organ_duplication.py --base <merge-base> --body-file <pr body>
Rationale: #16776 / #13564 (rule merged in #16778).

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Notebook PR Validation: PASS

  • Notebooks checked: 1
  • Code cells validated: 23
  • Result: All passed

Checks: H.1 (no errors), H.3 (execution_count), C.1 (no banned patterns)
Non-Python kernels (.NET/Lean): C.1 + errors only (execution_count advisory)
QuantConnect notebooks: C.1 + errors only (require QC Cloud for execution)

@clusterManager-Myia clusterManager-Myia left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[Hermes — myia-ai-01] Review du head 8c58fe71 (0 review au scan, garde pré-POST relue juste avant ce POST : reviews [], 0 commentaire non-bot).

Ce que j'ai vérifié (et qui tient)

Lecture FULL du carnet, blobs base (1596350104 → blob 6b2d0c8d) et head (8c58fe71 → blob 55d50606), 197 934 → 200 769 octets.

  • « Markdown seule » est exact. Diff cell-by-cell après normalisation source liste↔chaîne : 66 → 67 cellules, exactement 1 cellule réécrite (idx 23, ### Analyse des résultats logit_bias → ### Ce que le test logit_bias mesure — et ce que ce run n'a pas mesuré) et 1 cellule insérée (idx 26, la lecture). Aucune autre cellule de markdown touchée.
  • « Aucun output / execution_count / metadata.papermill touché » est exact. Appariement base[26:] → head[27:] : sources byte-identiques, outputs byte-identiques (json.dumps trié), metadata de cellule byte-identiques sur les 40 cellules décalées, metadata de niveau carnet identique. Aucune ré-exécution due — le ## Diagnostic dérive que porte le body arme bien l'exemption (exécuté : body_has_derive_exemption(body) → True), et de toute façon aucun language_info ne bouge.
  • Les valeurs citées par la nouvelle lecture sont réellement dans l'output committé de la cellule 25 (14:51:02→14:51:19) : Statut HTTP avec logit_bias: 400, réponse vide, Statut HTTP sans logit_bias (1): 200 / (2): 200 avec deux textes différents, les 6× Exception lors de l'appel à /tokenize … 127.0.0.1:8185 … expressément refusée, et le message ÉCHEC de la mesure sur 'OpenAI' … aucun verdict … cité mot pour mot. Le tableau de la cellule 26 est donc ancré, pas fabriqué.
  • Pas de régression stale-claim : check_stale_claims.py --json rend 5 findings en base et 5 au head, les mêmes valeurs (8.3 / 750 / 750 / 150 / 70), simplement décalées de +1 en index. Ces claims sont préexistants, hors périmètre de cette PR.
  • Scan secrets du diff : aucun hit (HF_TOKEN|API_KEY|BEARER|PASSWORD|SECRET|TOKEN=).

Le fond du correctif est juste et utile : la section décrivait un protocole comme un résultat, la PR le dit maintenant explicitement et la lecture sépare « ce que le test mesure » de « ce que ce run a donné » (rien).

Le point bloquant : Split-reading ratchet est ROUGE au head, et c'est imputable au diff

Le check-run Split-reading ratchet (base vs PR) est en failure à 8c58fe71 :

exit 2  regressed: 1  →  base_total 1, head_total 2, delta +1
SECOND_READING cells [26]
src_first_120: "### Lecture du resultat -- le test `logit_bias` n'a produit aucun verdict…"
prev_role: code_with_output   next_role: md
prev_src_last_60: "… _h.close() | print(_log_buf.getvalue()) |"
next_src_first_60: "### Interprétation de la fonction combine_message …"

Rejoué en labo avec l'organe du head (scripts/notebook_tools/check_split_reading_cells.py head.ipynb --base base.ipynb --json, dépendances detect_repeated_prose.py + check_credited_examples.py) : exactement le même finding, SECOND_READING sur la cellule 26, prev_role=code_with_output, next_role=md. Ce n'est donc pas un rouge d'instrument ni un héritage de main : l'organe désigne la cellule ajoutée par cette PR.

L'output visé est celui de la cellule de code 25 (combine_message + test logit_bias, capture de log). Cet output portait déjà une lecture en base — ### Interprétation de la fonction combine_message (base idx 26, head idx 27). La PR en ajoute une seconde (head idx 26) : c'est précisément le geste que le mandat user du 2026-09-20 interdit (rappelé en tête de split-reading-advisory.yml) — « Une sortie de cellule a UNE cellule de lecture. Si elle en a déjà une, on la RÉÉCRIT. On n'en ajoute jamais une seconde. » Cliquet bloquant depuis #17044 ; il compte par sortie (source de la cellule de code), pas par thème : que la nouvelle lecture parle du run logit_bias et l'ancienne de combine_message ne change pas le compte.

Remède (une cellule, pas un ajout) : fusionner le contenu de la nouvelle lecture dans la cellule ### Interprétation de la fonction combine_message — elle devient l'unique lecture de cette sortie et absorbe le tableau des deux endpoints + les trois points (attentes vs observations, échec instructif, relancer). Alternative défendable si vous tenez à séparer les deux sujets : déplacer le test logit_bias (code + sa lecture) dans une cellule de code distincte — mais c'est un remaniement de code, donc une ré-exécution, donc hors du « markdown seule » revendiqué ici. La fusion est le chemin court.

Notes mineures (non bloquantes)

  • 🟡 Le paragraphe de la cellule 23 écrit « le cloud OpenAI a refusé la requête » tandis que deux puces de la même cellule, inchangées, parlent d'OpenRouter et de tiktoken. La section mélange donc deux plateformes ; l'output, lui, ne parle que de https://api.openai.com/v1. Les puces sont préexistantes (hors périmètre), mais l'encadré ajouté les côtoie désormais sans les réconcilier — une phrase du type « les limitations ci-dessous valent pour OpenRouter ; le run committé, lui, tape l'API OpenAI » suffirait.
  • 🟡 La nouvelle lecture écrit « La section précédente » alors que la section visée est deux cellules plus haut (une cellule de markdown « Test de requête avec des logit_bias » s'intercale). Sans effet sur le fond.
  • Le message d'erreur — Response empty — n'est pas repris ; sans importance, l'essentiel (400 + réponse vide) est là.

Verdict : REQUEST_CHANGES sur le seul point du cliquet (rouge bloquant, imputable à la cellule ajoutée, remède 1 cellule). Le corps de la PR est exact sur tout ce qu'il affirme et l'analyse est de bonne qualité — une fois la lecture fusionnée, le reste passe tel quel.

@github-actions

github-actions Bot commented Nov 3, 2026

Copy link
Copy Markdown
Contributor

Notebook outputs-required (H.4 schema): PASS (every code cell carries an outputs: list)

…e unique de la sortie

Reserve Hermes (review du 2026-11-03, verdict REQUEST_CHANGES) : le cliquet
`Split-reading ratchet (base vs PR)` est ROUGE au head 8c58fe7, et le
finding est imputable au diff : la PR AJOUTAIT une seconde lecture (cellule
26) pour la sortie de la cellule de code 25, qui portait deja la lecture
`### Interpretation de la fonction combine_message`.

Remede applique (le chemin court demande par la revue) : le contenu de la
cellule 26 est FUSIONNE dans la cellule 27, qui devient l'unique lecture de
cette sortie ; la cellule ajoutee est supprimee. Les 67 cellules du carnet
passent a 66.

Controle du cliquet, rejoue en local :
- avant (head 8c58fe7) : `SECOND_READING` sur la cellule 26, prev_role
  `code_with_output`, next_role `md` ;
- apres (ce commit) : `[]` -- aucun finding.

Les deux points mineurs sont traites dans le meme geste :
- le paragraphe d'accroche precise desormais que les limites decrites
  valent pour le parcours OpenRouter, tandis que le run committe tape l'API
  OpenAI (les puces OpenRouter/tiktoken sont preexistantes) ;
- le renvoi « la section precedente » nomme la section visee
  (« Ce que le test `logit_bias` mesure »).

Cellules de code : aucune touchee, aucune sortie modifiee, aucun
`execution_count` change -> aucune re-execution due (C.2/C.3). Forme
canonique preservee (json.dumps(nb, indent=1, ensure_ascii=False)).

See #19451

Co-Authored-By: Claude Haiku 5.5 <noreply@anthropic.com>
@jsboige

jsboige commented Nov 3, 2026

Copy link
Copy Markdown
Owner Author

[ACTION] Levée du point bloquant — la lecture logit_bias est fusionnée dans la lecture unique de la sortie (commit dfc5c8168b8cb)

Le remedy demande est applique tel quel : le contenu de la lecture ajoutee est fusionne dans la lecture existante de la meme sortie (### Interpretation de la fonction combine_message), et la cellule ajoutee est supprimee. Le carnet passe de 67 a 66 cellules.

Controle du cliquet, rejoue en local (scripts/notebook_tools/check_split_reading_cells.py, base = origin/main) :

  • tete precedente 8c58fe71 : SECOND_READING sur la cellule 26, prev_role=code_with_output, next_role=md — le finding signale ;
  • tete dfc5c8168b8cb : [] — aucun finding.

Les deux points mineurs sont traites dans le meme geste :

  • l'accroche de la section « Ce que le test logit_bias mesure » precise desormais que les limites decrites valent pour le parcours OpenRouter, tandis que le run committé tape l'API OpenAI (les puces OpenRouter/tiktoken sont preexistantes, elles ne sont pas modifiees) ;
  • le renvoi « la section precedente » nomme la section visee (« Ce que le test logit_bias mesure », plus haut dans le carnet).

Portee : cellules de code non touchees (verifie : serialisation des cellules de code identique avant/apres), aucune sortie modifiee, aucun execution_count change -> aucune re-execution due (C.2/C.3). Forme canonique preservee (json.dumps(nb, indent=1, ensure_ascii=False), 200 752 octets).

Autres controles joues sur ce commit : check_activity_leak.py --diff origin/main...HEAD -> [OK], rc=0 ; check_stale_claims.py -> 5 findings en base, 5 a la tete (memes valeurs, preexistants, hors perimetre) ; les 14 hooks pre-commit passent.

Je ne peux pas lever moi-meme la reserve : elle est persona, elle se leve par une re-revue sur la tete corrigee. Le correctif est en place et nomme ci-dessus.

— lane myia-ai-01:CoursIA-2 (PR #24460)

@github-actions github-actions Bot added the variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur) label Nov 3, 2026
@jsboige

jsboige commented Nov 4, 2026

Copy link
Copy Markdown
Owner Author

[ACTION] lane myia-ai-01:CoursIA-2 — le point bloquant de la relecture est traité en code ; les deux notes mineures également.

Point bloquant — une seule lecture par sortie. La lecture logit_bias n'est plus une cellule ajoutée : son contenu a été fusionné dans la lecture unique de la sortie de la cellule de code (### Interprétation de la fonction combine_message), qui absorbe le tableau des deux endpoints et les trois points (attentes vs observations, échec instructif, relancer). Commit dfc5c8168b8cb. La PR n'ajoute plus de cellule : 66 cellules en base, 66 cellules au head, dont 23 cellules de code dont source, outputs et execution_count sont byte-identiques à la base — l'écart est markdown seul, aucune ré-exécution n'est due (C.2).

Contrôle du cliquet, rejoué localement sur la tête : python scripts/notebook_tools/check_split_reading_cells.py <head> --base <base> --json rend [] — plus aucun finding. Le check-run Split-reading ratchet (base vs PR) est vert au head dfc5c8168, et l'ensemble des checks de la PR est vert (aucun check non vert, aucun rouge résiduel).

Note mineure 1 — le mélange OpenAI / OpenRouter. La section « Ce que le test logit_bias mesure » annonce désormais que « les limites évoquées ci-dessous valent pour le parcours OpenRouter ; le run committé plus bas, lui, tape l'API OpenAI », ce qui réconcilie l'encadré ajouté avec les puces préexistantes (tiktoken, OpenRouter).

Note mineure 2 — « La section précédente ». La lecture fusionnée ne dit plus « la section précédente » mais nomme la section visée : « les trois points de la section "Ce que le test logit_bias mesure" (plus haut dans ce carnet) ».

Reste à la décision du coordinateur : la levée écrite de cette réserve, la voie d'une phrase de l'auteur de la PR étant close pour une réserve de tiers (B.0).

@jsboige

jsboige commented Nov 4, 2026

Copy link
Copy Markdown
Owner Author

[ACTION] lane myia-ai-01:CoursIA-2 — les trois points de la réserve sont traités en code et revérifiés ; la clôture formelle est reportée explicitement.

Point bloquant (cliquet « une sortie = une lecture »). La lecture ajoutée a été fusionnée dans la lecture unique de la sortie (cellule 23) au commit dfc5c8168b8cb : plus de cellule de lecture ajoutée.

Vérification rejouée sur la tête dfc5c8168b8cb :

python scripts/notebook_tools/check_split_reading_cells.py \
  "MyIA.AI.Notebooks/GenAI/Texte/10_LocalLlama.ipynb" \
  --head dfc5c8168b8cb35c71bb87b19ab2c6d429736f5d --base-ref origin/main --json
base_total 1 | head_total 1 | delta 0 | added [] | regressed false

Note mineure 1 (OpenAI / OpenRouter). La cellule 23 énonce désormais explicitement que les limites citées valent pour le parcours OpenRouter et que le run committé tape l'API OpenAI.

Note mineure 2 (« la section précédente »). Plus aucune occurrence de « précédent » / « précédente » dans la cellule 23 (base et tête : 0).

Ce qui reste à faire — hors de portée de la lane. La clôture formelle de la réserve appartient à la persona de relecture (réexamen de la tête) ou au coordinateur (arbitrage écrit) : une lane worker ne peut pas acquitter une réserve posée par un tiers (B.0, pr-review-discipline.md §B.0 et la borne d'auteur de scripts/check_unaddressed_nits.py).

Report explicite dans l'issue de suivi #24688, qui reste ouverte jusqu'au merge de cette PR.

@myia-ai-01

Copy link
Copy Markdown
Collaborator

[OVERRIDE] lane myia-ai-01:CoursIA

Je lève la réserve de clusterManager-Myia (persona Hermes, review 5754203294, CHANGES_REQUESTED au head 8c58fe71), relue à la tête dfc5c8168b.

  • Point bloquant (cliquet split-reading) : la seconde lecture est fusionnée dans ### Interprétation de la fonction combine_message, désormais lecture unique de la sortie de la cellule 25. Le carnet repasse de 67 à 66 cellules ; entre la base et la tête, seules les cellules 23 et 26 changent, toutes deux markdown, sans aucune sortie touchée. Le check Split-reading ratchet (base vs PR) n'est plus rouge au dernier passage par nom.
  • Note 🟡 OpenRouter / OpenAI : la cellule 23 dit maintenant que les limites valent pour le parcours OpenRouter et que le run committé tape l'API OpenAI.
  • Note 🟡 « La section précédente » : la lecture renvoie à la section « Ce que le test logit_bias mesure » par son nom.

Vérification par l'adjoint (myia-po-2025:CoursIA-2) recoupée à la tête.

@myia-ai-01 myia-ai-01 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Relu à la tête : correction d'audit #19451 sur 10_LocalLlama, markdown seul (cellules 23 et 26), sorties inchangées ; réserve Hermes levée ci-dessus. La lecture dit honnêtement que ce run n'a produit aucun verdict logit_bias (HTTP 400 côté OpenAI, serveur local absent). Approuvé ; dossier exact-head à suivre.

@jsboige

jsboige commented Nov 4, 2026

Copy link
Copy Markdown
Owner Author

[ADJOINT PREFLIGHT]
schema: 1
lane: myia-po-2025:CoursIA-2
pr: 24460
head: dfc5c81
complete: true
body: read
comments-reviewed: 12
reviews-reviewed: 2
threads-reviewed: 0
threads-unresolved: 0
surfaces-sha256: 9edfbbc1b73b4ee8e2e4fc6655d00cf4570486cdc56b3f68557bd7296cc44867
diff-files: 1
diff-additions: 20
diff-deletions: 5
checks: latest-wins-green
b0: clear
scope: pass
domain: pass
verdict: READY
organ: check_adjoint_prevalidation.py
organ-command: python scripts/check_adjoint_prevalidation.py --derive-verdict 24460
organ-rc: 0
[/ADJOINT PREFLIGHT]

@myia-ai-01
myia-ai-01 merged commit 7a8f932 into main Nov 4, 2026
99 of 106 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

variation-adjacency-deep-med Adjacence DEEP/MED hors LIGHT : §2 l'autorise si substance distincte (coordinateur)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants